package com.student.Activitys.utils;

//文件操作类

import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.provider.MediaStore;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

/**
 * 文件读写工具类
 *
 * 创建人：张飞祥
 * 创建时间：2017/9/18 下午2:17
 * 修改人：张飞祥
 * 修改时间：2017/9/18 下午2:17
 * @author bear
 *
 */
public class FileUtils {


	/**
	 * 如果文件不存在，就创建文件
	 *
	 * @param path 文件路径
	 * @return
	 */
	public static String createIfNotExist(String path) {
		File file = new File(path);
		if (!file.exists()) {
			try {
				file.createNewFile();
			} catch (Exception e) {
				System.out.println(e.getMessage());
			}
		}
		return path;
	}

	/**
	 * 向文件中写入数据
	 *
	 * @param filePath 目标文件全路径
	 * @param data     要写入的数据
	 * @return true表示写入成功  false表示写入失败
	 */
	public static boolean writeBytes(String filePath, byte[] data) {
		try {
			FileOutputStream fos = new FileOutputStream(filePath);
			fos.write(data);
			fos.close();
			return true;
		} catch (Exception e) {
			System.out.println(e.getMessage());
		}
		return false;
	}

	/**
	 * 从文件中读取数据
	 *
	 * @param file
	 * @return
	 */
	public static byte[] readBytes(String file) {
		try {
			FileInputStream fis = new FileInputStream(file);
			int len = fis.available();
			byte[] buffer = new byte[len];
			fis.read(buffer);
			fis.close();
			return buffer;
		} catch (Exception e) {
			System.out.println(e.getMessage());
		}

		return null;

	}

	/**
	 * 向文件中写入字符串String类型的内容
	 *
	 * @param file    文件路径
	 * @param content 文件内容
	 * @param charset 写入时候所使用的字符集
	 */
	public static void writeString(String file, String content, String charset) {
		try {
			byte[] data = content.getBytes(charset);
			writeBytes(file, data);
		} catch (Exception e) {
			System.out.println(e.getMessage());
		}

	}

	/**
	 * 从文件中读取数据，返回类型是字符串String类型
	 *
	 * @param file    文件路径
	 * @param charset 读取文件时使用的字符集，如utf-8、GBK等
	 * @return
	 */
	public static String readString(String file, String charset) {
		byte[] data = readBytes(file);
		String ret = null;

		try {
			ret = new String(data, charset);
		} catch (Exception e) {
			System.out.println(e.getMessage());
		}
		return ret;
	}

	/**
	 * 根据Uri 获取图片的真实路径
	 * @param context
	 * @param uri
	 * @return
	 */
	public static String getRealFilePath( final Context context, final Uri uri ) {
		if ( null == uri ) return null;
		final String scheme = uri.getScheme();
		String data = null;
		if ( scheme == null )
			data = uri.getPath();
		else if ( ContentResolver.SCHEME_FILE.equals( scheme ) ) {
			data = uri.getPath();
		} else if ( ContentResolver.SCHEME_CONTENT.equals( scheme ) ) {
			Cursor cursor = context.getContentResolver().query( uri, new String[] { MediaStore.Images.ImageColumns.DATA }, null, null, null );
			if ( null != cursor ) {
				if ( cursor.moveToFirst() ) {
					int index = cursor.getColumnIndex( MediaStore.Images.ImageColumns.DATA );
					if ( index > -1 ) {
						data = cursor.getString( index );
					}
				}
				cursor.close();
			}
		}
		return data;
	}

	/**
	 *
	 * 根据 Uri 删除手机相应的 图片
	 *
	 */
	public static void deletePhoto(Context context,Uri fileUri) {

		//获取图片真实路径
		String path = getRealFilePath(context,fileUri);
		/**
		 * 执行删除图片操作
		 */
		Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
		ContentResolver mContentResolver = context.getContentResolver();
		String where = MediaStore.Images.Media.DATA + "='" + path + "'";
		//删除图片
		mContentResolver.delete(uri, where, null);
		/**
		 * 发送广播清理 数据库，做到删除的彻底
		 */
		Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
		File file = new File(path);
		Uri uriBroad = Uri.fromFile(file);
		intent.setData(uriBroad);
		context.sendBroadcast(intent);
	}
}


